{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "initial_id",
   "metadata": {
    "collapsed": true,
    "ExecuteTime": {
     "end_time": "2024-08-27T09:27:58.418768500Z",
     "start_time": "2024-08-27T09:27:56.769022600Z"
    }
   },
   "outputs": [],
   "source": [
    "import jieba\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "./最终数据/Java.csv\n",
      "./最终数据/C_C++.csv\n",
      "./最终数据/PHP.csv\n",
      "./最终数据/Python.csv\n",
      "./最终数据/C#.csv\n",
      "./最终数据/.NET.csv\n",
      "./最终数据/Golang.csv\n",
      "./最终数据/Node.js.csv\n",
      "./最终数据/Hadoop.csv\n",
      "./最终数据/语音_视频_图形开发.csv\n",
      "./最终数据/GIS工程师.csv\n",
      "./最终数据/区块链工程师.csv\n",
      "./最终数据/全栈工程师.csv\n",
      "./最终数据/其他后端开发.csv\n",
      "./最终数据/前端开发工程师.csv\n",
      "./最终数据/Android.csv\n",
      "./最终数据/iOS.csv\n",
      "./最终数据/U3D.csv\n",
      "./最终数据/UE4.csv\n",
      "./最终数据/Cocos.csv\n",
      "./最终数据/技术美术.csv\n",
      "./最终数据/JavaScript.csv\n",
      "./最终数据/鸿蒙开发工程师.csv\n",
      "./最终数据/测试工程师.csv\n",
      "./最终数据/软件测试.csv\n",
      "./最终数据/自动化测试.csv\n",
      "./最终数据/功能测试.csv\n",
      "./最终数据/测试开发.csv\n",
      "./最终数据/硬件测试.csv\n",
      "./最终数据/游戏测试.csv\n",
      "./最终数据/性能测试.csv\n",
      "./最终数据/渗透测试.csv\n",
      "./最终数据/测试经理.csv\n",
      "./最终数据/运维工程师.csv\n",
      "./最终数据/IT技术支持.csv\n",
      "./最终数据/网络工程师.csv\n",
      "./最终数据/网络安全.csv\n",
      "./最终数据/系统工程师.csv\n",
      "./最终数据/运维开发工程师.csv\n",
      "./最终数据/系统管理员.csv\n",
      "./最终数据/DBA.csv\n",
      "./最终数据/系统安全.csv\n",
      "./最终数据/技术文档工程师.csv\n",
      "./最终数据/图像算法.csv\n",
      "./最终数据/自然语言处理算法.csv\n",
      "./最终数据/大模型算法.csv\n",
      "./最终数据/数据挖掘.csv\n",
      "./最终数据/规控算法.csv\n",
      "./最终数据/SLAM算法.csv\n",
      "./最终数据/推荐算法.csv\n",
      "./最终数据/搜索算法.csv\n",
      "./最终数据/语音算法.csv\n",
      "./最终数据/风控算法.csv\n",
      "./最终数据/算法研究员.csv\n",
      "./最终数据/算法工程师.csv\n",
      "./最终数据/机器学习.csv\n",
      "./最终数据/深度学习.csv\n",
      "./最终数据/自动驾驶系统工程师.csv\n",
      "./最终数据/数据标注_AI训练师.csv\n",
      "./最终数据/售前技术支持.csv\n",
      "./最终数据/售后技术支持.csv\n",
      "./最终数据/销售技术支持.csv\n",
      "./最终数据/客户成功.csv\n",
      "./最终数据/数据分析师.csv\n",
      "./最终数据/数据开发.csv\n",
      "./最终数据/数据仓库.csv\n",
      "./最终数据/ETL工程师.csv\n",
      "./最终数据/数据挖掘.csv\n",
      "./最终数据/数据架构师.csv\n",
      "./最终数据/爬虫工程师.csv\n",
      "./最终数据/数据采集.csv\n",
      "./最终数据/项目经理_主管.csv\n",
      "./最终数据/项目助理.csv\n",
      "./最终数据/项目专员.csv\n",
      "./最终数据/实施工程师.csv\n",
      "./最终数据/实施顾问.csv\n",
      "./最终数据/需求分析工程师.csv\n",
      "./最终数据/硬件项目经理.csv\n",
      "./最终数据/技术经理.csv\n",
      "./最终数据/架构师.csv\n",
      "./最终数据/技术总监.csv\n",
      "./最终数据/CTO_CIO.csv\n",
      "./最终数据/技术合伙人.csv\n",
      "./最终数据/运维总监.csv\n",
      "./最终数据/其他技术职位.csv\n"
     ]
    }
   ],
   "source": [
    "#读取pois_code文件获取文件名进行统计\n",
    "pois_code=pd.read_csv(\"end_pois_code.csv\")\n",
    "df=pois_code[0:85]\n",
    "# 迭代每一行\n",
    "poisname=df.iterrows()\n",
    "for index,row in poisname:\n",
    "    csvname=row['职位']\n",
    "    poiscode=row['编号']\n",
    "    file_name=csvname.replace(\"/\",\"_\")\n",
    "    # print(file_name)\n",
    "    csv_file_name=f\"./最终数据/{file_name}.csv\"\n",
    "    print(csv_file_name)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-08-27T09:27:58.470628500Z",
     "start_time": "2024-08-27T09:27:58.413780300Z"
    }
   },
   "id": "369320282e9c7844"
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "jobname\n",
      "salaryDesc\n",
      "jobLabels\n",
      "skills\n",
      "jobExperience\n",
      "jobDegree\n",
      "cityName\n",
      "areaDistrict\n",
      "businessDistrict\n",
      "brandName\n",
      "brandStageName\n",
      "brandIndustry\n",
      "brandScaleName\n",
      "welfareList\n"
     ]
    }
   ],
   "source": [
    "df=pd.read_csv('./最终数据/Java.csv')\n",
    "for column in df.columns:\n",
    "    print(column)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-08-27T09:27:58.479605700Z",
     "start_time": "2024-08-27T09:27:58.443699300Z"
    }
   },
   "id": "37cc1913dd17a8f6"
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": []
    }
   ],
   "source": [
    "def dispose_k(text):  \n",
    "    # 分割薪资描述  \n",
    "    end_dt = text.split(\"·\")  \n",
    "    if not end_dt:  # 如果没有分割项，则返回None或抛出异常  \n",
    "        return None  \n",
    "  \n",
    "    # 初始化月薪和年薪倍数的默认值  \n",
    "    monthly_salary = 0  \n",
    "    annual_multiplier = 12  # 默认12个月  \n",
    "  \n",
    "    for part in end_dt:  \n",
    "        # 检查是否包含“薪”  \n",
    "        if part.endswith(\"薪\"):  \n",
    "            try:  \n",
    "                annual_multiplier = int(part[:-1])  # 去掉“薪”字后转换  \n",
    "            except ValueError:  \n",
    "                pass  # 如果转换失败，保持默认值  \n",
    "  \n",
    "        # 检查是否包含薪资范围（以'K'结尾）  \n",
    "        if part.endswith(\"K\"):  \n",
    "            # 尝试分割薪资范围  \n",
    "            salary_range = part[:-1].split(\"-\")  \n",
    "            if len(salary_range) == 2:  \n",
    "                try:  \n",
    "                    # 转换薪资范围并计算平均值  \n",
    "                    lower_bound = int(salary_range[0])  \n",
    "                    upper_bound = int(salary_range[1])  \n",
    "                    monthly_salary = (lower_bound + upper_bound) // 2  # 取平均值  \n",
    "                except ValueError:  \n",
    "                    pass  # 如果转换失败，保持薪资为0  \n",
    "  \n",
    "    # 如果月薪不为0，计算年薪  \n",
    "    if monthly_salary > 0:  \n",
    "        return monthly_salary * annual_multiplier*1000 \n",
    "    else:  \n",
    "        return None  # 如果没有有效的薪资信息，则返回None  \n",
    "  \n",
    "\n",
    "df1=df['salaryDesc']  \n",
    "for text1 in df1:  \n",
    "    # print(text1)\n",
    "    result = (dispose_k(text1))\n",
    "    df['具体年薪']=df['salaryDesc'].apply(dispose_k)\n",
    "    if result is not None:\n",
    "        pass\n",
    "        # print(f\"年薪: {result}\")  \n",
    "    else:  \n",
    "        print(\"无法计算年薪\")\n",
    "df['具体年薪']\n",
    "print()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-08-27T09:27:58.480601600Z",
     "start_time": "2024-08-27T09:27:58.468634700Z"
    }
   },
   "id": "70ec5ffba0d7a076"
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\三创\\python\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 21592 (\\N{CJK UNIFIED IDEOGRAPH-5458}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "d:\\三创\\python\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 24037 (\\N{CJK UNIFIED IDEOGRAPH-5DE5}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "d:\\三创\\python\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 25968 (\\N{CJK UNIFIED IDEOGRAPH-6570}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "d:\\三创\\python\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 37327 (\\N{CJK UNIFIED IDEOGRAPH-91CF}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "d:\\三创\\python\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 30456 (\\N{CJK UNIFIED IDEOGRAPH-76F8}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "d:\\三创\\python\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 21516 (\\N{CJK UNIFIED IDEOGRAPH-540C}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "d:\\三创\\python\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 23703 (\\N{CJK UNIFIED IDEOGRAPH-5C97}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "d:\\三创\\python\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 20301 (\\N{CJK UNIFIED IDEOGRAPH-4F4D}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "d:\\三创\\python\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 20316 (\\N{CJK UNIFIED IDEOGRAPH-4F5C}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "d:\\三创\\python\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 24180 (\\N{CJK UNIFIED IDEOGRAPH-5E74}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "d:\\三创\\python\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 34218 (\\N{CJK UNIFIED IDEOGRAPH-85AA}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "d:\\三创\\python\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 20998 (\\N{CJK UNIFIED IDEOGRAPH-5206}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "d:\\三创\\python\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 24067 (\\N{CJK UNIFIED IDEOGRAPH-5E03}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "d:\\三创\\python\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 30452 (\\N{CJK UNIFIED IDEOGRAPH-76F4}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "d:\\三创\\python\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 26041 (\\N{CJK UNIFIED IDEOGRAPH-65B9}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "d:\\三创\\python\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 22270 (\\N{CJK UNIFIED IDEOGRAPH-56FE}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "d:\\三创\\python\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 65288 (\\N{FULLWIDTH LEFT PARENTHESIS}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "d:\\三创\\python\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 20803 (\\N{CJK UNIFIED IDEOGRAPH-5143}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "d:\\三创\\python\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 65289 (\\N{FULLWIDTH RIGHT PARENTHESIS}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n"
     ]
    },
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "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DBUVFamyslL/+7//q1mzZumNN97o6rY6RWuzjhgxIqz2tLS0VN/73ve0bt06RUdHd3U7naots4bL3t5www3ev8eMGaOcnBwNGTJEf/rTnxQTE9OFnXWesHtpLCUlRZJavHP8k08+8U5LSUnR4cOHg05vaGhQeXl50JpQl9H8Olpb0/z0s/XS0S655BIlJiZqz549Xg89bdY5c+bo5Zdf1vr16zV48GCvnpKSohMnTqiiouKMfZzrLHFxcYqJiVFiYqJ8Pt9Z5z1bL+czayg5OTmSFLS3PWXWyMhIDRs2TJdffrkWLVqksWPH6pe//GVY7mlrs4bSk/d027ZtOnz4sMaNGye/3y+/36833nhDS5Yskd/v14ABA8Jmb882a2NjY4vz9OS9bS4+Pl6XXnqp9uzZE5b3VykMg1B6erpSUlL02muvebWqqipt3rzZe51+0qRJqqio0LZt27w1r7/+ugKBgHfjnTRpkgoKClRfX++tWbdunTIyMtSvXz9vTfPraVrTdD1t6aWjffTRR/r00081cODAHjerMUZz5szR6tWr9frrr7d4ue7yyy9XRERE0HUUFxerpKQkaG/feeedoPC3bt06xcXFeS9PnG2WyMhIXX755UFrAoGAXnvtNW9NW3o5n1lDKSoqkqSgve0Js4YSCARUV1cXVnt6tllD6cl7eu211+qdd95RUVGR9zV+/HjNnDnT+3e47O3ZZvX5fC3O05P3trmjR49q7969GjhwYPjeX9v11upuorq62hQWFprCwkIjyTzzzDOmsLDQfPjhh8aYkx/jjo+PNy+++KLZsWOHufnmm0N+fD47O9ts3rzZvPnmm2b48OFBHymvqKgwAwYMMN/61rfMzp07TV5enomNjW3xkXK/32/+7d/+zezatcvMnz8/5EfKz9bLuc5aXV1tfvCDH5hNmzaZ/fv3m1dffdWMGzfODB8+3Bw/frzHzXrPPfeYvn37mg0bNgR9dLOmpsZbc/fdd5u0tDTz+uuvm61bt5pJkyaZSZMmeac3fXTzy1/+sikqKjKvvPKKSUpKCvnRzQcffNDs2rXLLF++PORHN6OioszKlSvNe++9Z+666y4THx8f9EmIs/VyPrPu2bPHPPbYY2br1q1m//795sUXXzSXXHKJueqqq3rcrA899JB54403zP79+82OHTvMQw89ZBzHMfn5+W267J4y59lmDac9bc3pn5wKp70906zhtLff//73zYYNG8z+/fvNxo0bTW5urklMTDSHDx9u02X3lDmb65FBaP369UZSi69Zs2YZY05+lPuRRx4xAwYMMFFRUebaa681xcXFQZfx6aefmhkzZpjevXubuLg4c8cdd5jq6uqgNdu3bzdf+MIXTFRUlLnooovMU0891aKXP/3pT+bSSy81kZGRZuTIkeYvf/lL0Olt6eVcZ62pqTFf/vKXTVJSkomIiDBDhgwxd955Z9ANpSfNGmpOSebZZ5/11tTW1pp7773X9OvXz8TGxpqvfe1r5uDBg0GX849//MPccMMNJiYmxiQmJprvf//7pr6+vsXPNSsry0RGRppLLrkk6DqaLF261KSlpZnIyEgzYcIE89ZbbwWd3pZeznXWkpISc9VVV5n+/fubqKgoM2zYMPPggw8G/V6SnjLrd77zHTNkyBATGRlpkpKSzLXXXuuFoLZedk+Y82yzhtOetub0IBROe3umWcNpb2+99VYzcOBAExkZaS666CJz6623mj179rTrsnvCnM05xhjTvmNIAAAA4SHs3iMEAADQVgQhAABgLYIQAACwFkEIAABYiyAEAACsRRACAADWIggBAABrEYQAAIC1+OvzAC6oN954Q9/97ndb/BXvQCCgL33pS9qyZUvIv8119OhRvfvuu1q8eLH+8Ic/yO8Pfvg6ceKEfvKTn2jixIm64YYbFBsb2+Iy0tPTtXr1an3ta1/T/v37W5xeU1OjtWvX9qi/Fg7g/BCEAFxQtbW1mj59uhYsWBBU/8c//qGHHnpIjuN4f7CyuauvvlrGGH322WdatmyZrr766qDTV65cqerqatXX12vy5MlauXJli8uYOHGiJOngwYMhr+Pb3/520B8fBhD+eGkMAABYiyAEAACsRRACAADWIggBAABrEYQAAIC1CEIAAMBaBCEAAGAtghAAALAWQQgAAFiLIAQAAKzFn9gAcEH17dtXL7/8sl5++eUWp02dOlUVFRUaP358yPO6rqvBgwfrBz/4QcjTH374YcXExGjnzp0hL2P06NGSpMsuu6zV64iJiWnrKADCgGOMMV3dBAAAQFfgpTEAAGAtghAAALAWQQgAAFiLIAQAAKxFEAIAANYiCAEAAGsRhAAAgLUIQgAAwFoEIQAAYK3/D+sEnfAMrAl7AAAAAElFTkSuQmCC"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#薪资区间出图\n",
    "import matplotlib.pyplot as plt  \n",
    "import numpy as np  \n",
    "  \n",
    "# 假设的年薪数据（相同岗位）  \n",
    "salaries = df['具体年薪'] \n",
    "  \n",
    "# 使用matplotlib绘制直方图  \n",
    "# bins参数定义了年薪区间的数量和范围，使用'auto'让matplotlib自动选择  \n",
    "# 也可以手动指定bins的边界，例如np.arange(100000, 180001, 10000)来创建每10000元一个区间的直方图  \n",
    "plt.hist(salaries, bins='auto', color='skyblue', edgecolor='black')  \n",
    "  \n",
    "# 添加标题和轴标签  \n",
    "plt.title('相同岗位工作年薪分布直方图')  \n",
    "plt.xlabel('年薪（元）')  \n",
    "plt.ylabel('员工数量')  \n",
    "  \n",
    "# 显示网格（可选）  \n",
    "plt.grid(axis='y', linestyle='--')  \n",
    "  \n",
    "# 显示图表  \n",
    "plt.show()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-08-27T09:27:58.698020200Z",
     "start_time": "2024-08-27T09:27:58.475614Z"
    }
   },
   "id": "8a8554458da93add"
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "出现次数最多的词是：[('Java', 23), (' MySQL', 20), (' Spring', 19), (' SpringCloud', 14), (' Redis', 12), (' MyBatis', 9), (' Java', 6), (' Python', 4), (' 微服务经验', 4), (' 分布式经验', 4), (' Oracle', 4), (' C++', 3), (' 后端工程师', 3), (' 计算机/软件工程相关经验', 3), (' Java开发经验', 3), (' 分布式系统开发经验', 3), (' MongoDB', 3), (' 不接受居家办公', 3), ('后端工程师', 3), (' Docker', 2), (' 软件工程师', 2), (' SpringBoot', 2), (' SQL', 2), (' PHP', 2), (' SQL Server', 2), (' 架构设计经验', 2), (' 游戏后端经验', 2), (' ERP开发经验', 2), (' Nginx', 2), (' 架构师', 2), (' PostgreSQL', 2), (' 搜索/推荐/广告经验', 2), (' Eclipse', 1), (' IDEA', 1), (' 后端开发', 1), (' 中间件', 1), (' 海量数据处理', 1), (' 高并发', 1), ('全栈工程师', 1), (' 微服务架构', 1), (' 国内院校优先', 1), (' 高级软件工程师', 1), (' Hibernate', 1), (' MES开发经验', 1), (' Zookeeper', 1), (' CRM系统开发经验', 1), (' clickhouse', 1), (' doris', 1), (' Kafka', 1), (' K8S', 1), (' api', 1), (' Jenkins', 1), (' HBase', 1), (' Hive', 1), (' 接受居家办公', 1), (' 可兼职', 1), ('多线程', 1), (' GIT', 1), (' Maven', 1), (' Elasticsearch', 1), (' 团队管理经验', 1), (' Tomcat', 1), (' 全栈工程师', 1), (' 分布式技术', 1), (' Struts', 1), (' 中级软件工程师', 1), ('RabbitMQ', 1), (' Spring Boot', 1), ('留学生优先', 1), (' 英美留学生', 1), (' 澳加留学生', 1), (' 英语口语流利', 1), (' Kubernetes / Docker', 1), (' 公有云，AWS', 1), (' linux', 1), (' 性能优化', 1)]\n"
     ]
    }
   ],
   "source": [
    "#统计出现频率最高的10个职业技能\n",
    "from collections import Counter\n",
    "df2=df['skills']\n",
    "merget=[]\n",
    "for test2 in df2:\n",
    "    # print(test2)\n",
    "    # print(type(test2))\n",
    "    data1=test2.split(\",\")\n",
    "    # print(data1)\n",
    "    # print(type(data1))\n",
    "    merget+=data1\n",
    "    # print(merget)\n",
    "    # 使用Counter统计词频  \n",
    "word_counts = Counter(merget)\n",
    "    # 找出出现次数最多的词  \n",
    "most_common_words = word_counts.most_common()\n",
    "print(f\"出现次数最多的词是：{most_common_words}\")\n"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-08-27T09:27:58.769828700Z",
     "start_time": "2024-08-27T09:27:58.695027800Z"
    }
   },
   "id": "a495673be3a51d1d"
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "outputs": [],
   "source": [
    "# 出图\n",
    "import pyecharts.options as opts\n",
    "from pyecharts.charts import WordCloud\n",
    "from pyecharts.globals import SymbolType\n",
    "data=most_common_words\n",
    "c = (\n",
    "    WordCloud()\n",
    "    .add(\"\", data, word_size_range=[0, 100], shape=SymbolType.DIAMOND)\n",
    "    .set_global_opts(title_opts=opts.TitleOpts(title=\"skills\"))\n",
    "    .render(\"skill.html\")\n",
    ")\n",
    "\n"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-08-27T09:27:58.916435500Z",
     "start_time": "2024-08-27T09:27:58.711982700Z"
    }
   },
   "id": "ef4b72be8d99d405"
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "outputs": [],
   "source": [],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-08-27T09:27:58.931674300Z",
     "start_time": "2024-08-27T09:27:58.916435500Z"
    }
   },
   "id": "a13bbf82f0da5c4f"
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
